package com.czxy.service;

import cn.itcast.commons.CommonUtils;
import com.czxy.dao.UserDao;
import com.czxy.domain.User;

import java.util.ArrayList;
import java.util.List;

public class UserService {
    private UserDao userDao = new UserDao();


    /**
     * 根据id 删除掉 user数据
     *
     * @param id
     */
    public void delById(String id) {
        //1.获取所有数据
        List<User> all = userDao.findAll();
        //2.删除掉指定数据
        for (int i = 0; i < all.size(); i++) {
            User user = all.get(i);
            if (user.getId().equals(id)) {
                all.remove(i);
                break;
            }
        }

        //3.把新数据更新到xml
        userDao.del(all);

    }


    /**
     * 查找用户名包含指定文字的 用户信息
     *
     * @param userName
     * @return
     */
    public List<User> findByUserName(String userName) {

        //1.调用userDao方法获取所有的用户
        List<User> all = userDao.findAll();
        //2.遍历查找,把符合条件的数据放到新 集合 中
        ArrayList<User> list = new ArrayList<>();
        for (User user : all) {
            if (user.getUserName().contains(userName)) {
                list.add(user);
            }
        }
        //3.把新集合返回
        return list;
    }

    /**
     * 添加功能
     *
     * @param user
     * @return
     */
    public boolean add(User user) {
        // 1.获取所有用户 检查用户是否重复  重复了 直接返回false
        List<User> list = userDao.findAll();
        for (User u : list) {
            if (u.getLoginName().equals(user.getLoginName())) {
                return false;
            }
        }
        // 2.没有重复 则 追加
        // 给user对象添加id
        user.setId(CommonUtils.uuid());
        user.setType("普通员工");
        userDao.add(user);
        return true;
    }


    /**
     * 查询所有用户
     *
     * @return
     */
    public List<User> findAll() {
        return userDao.findAll();
    }

    /**
     * 登录逻辑判断, 找用户名密码相同的, 找到就返回 没有找到就返回 null
     *
     * @param user
     * @return
     */
    public User login(User user) {
        //1.调用dao方法获取所有用户集合
        List<User> all = userDao.findAll();
        //2.遍历集合 如果找到用户名和密码匹配的 就返回 对应的user对象
        for (User u : all) {
            if (u.getLoginName().equals(user.getLoginName()) && u.getLoginPwd().equals(user.getLoginPwd())) {
                return u;
            }
        }
        //3.如果没有找到则返回 null
        return null;
    }
}
